// import { login, logout, getInfo } from '@/api/user'
// 导入封装好的本地保存token的方法
import { getToken, setToken, removeToken } from '@/utils/auth'
import { resetRouter } from '@/router'// 导入重置路由的方法
// 导入api方法
import { loginAPI, getUserInfoAPI, getUserDetailByIdAPI } from '@/api/user'
export default {
  // 开启命名空间
  namespaced: true,
  state: {
    // 本地有token先去本地,没有token为null
    token: getToken() || null,

    // 用户信息
    userInfo: {}
  },
  mutations: {
    // 存储token
    setToken(state, token) {
      // 将token存入到state
      state.token = token
      // 调用封装好的保存方法将获取到的token保存到本地
      setToken(state.token)
    },

    // 删除token
    removeToken(state) {
      state.token = ''
      removeToken()
    },

    // 设置用户信息
    setUserInfo(state, userInfo) {
      state.userInfo = userInfo
    },

    // 删除用户信息
    removeUserInfo(state) {
      state.userInfo = {}
    }
  },
  actions: {
    // 退出登录
    logOut(context) {
      // 删除token
      context.commit('removeToken')
      // 删除用户信息
      context.commit('removeUserInfo')
      // 重置路由
      resetRouter()
    },

    // 登录请求
    // context
    async loginRequest(context, obj) {
      console.log(context)
      // 调用登录的方法,并传入login页面传过来的参数
      const res = await loginAPI(obj)
      // 将返回的token传给state
      context.commit('setToken', res.data)
    },

    // 获取用户信息
    async getUserInfo(context) {
      // 调用用户信息方法
      const res = await getUserInfoAPI()
      // 调用员工基本信息,并传入获取到的员工id
      const res2 = await getUserDetailByIdAPI(res.data.userId)
      // console.log(res)
      // 将返回的用户信息和员工基本信息传给 mutations里封装好的方法
      context.commit('setUserInfo', { ...res.data, ...res2.data })
      // 返回用户信息里的menus属性
      return res.data.roles.menus
    }
  }
}

